package com.kylin.module.study.business;

import java.io.IOException;

import org.apache.log4j.Logger;
import org.apache.struts.upload.FormFile;

import com.kylin.common.exception.BusinessException;
import com.kylin.common.util.Config;
import com.kylin.common.util.FileOperater;

/**
 * 学习模块的通用业务逻辑处理类
 * @author lzh
 *
 */
public class StudyBlogic {
	protected static Logger log = Logger.getLogger(StudyBlogic.class);
	
	/**
	 * 通用业务功能：上传文件
	 *   如果存在oldFile值，上传新文件后将删除oldFile
	 * @param String flag 文件类别标志，参见 Constants
     *        Constants.MEDIA_ARTICLE: 阅读文章声音文件
     *        Constants.MEDIA_COURSE:  课件多媒体文件
     *        Constants.MEDIA_VOCABUL: 词汇声音文件
	 * @param formFile 上传的文件
	 * @param oldFile  已存在的旧文件（update文件时需要）
	 * @return
	 * @throws BusinessException
	 */
	public static String uploadMedia(String flag,FormFile formFile,String oldFile) throws BusinessException{
    log.debug("flag="+flag+" ,formFile="+formFile+" ,oldFile="+oldFile);
		String filePath = null;
		if (formFile != null 
				&& formFile.getFileSize() > 0
				&& formFile.getFileName() != null
				&& !formFile.getFileName() .equals("")) {
log.debug(" FileSize()="+formFile.getFileSize() + ", FileName()="+formFile.getFileName());			
			if(formFile.getFileSize() > Config.uploadMaxSize*1024)
				throw new BusinessException("上传文件尺寸最大不能超过 "+Config.uploadMaxSize+" KB");
			try{
				if(oldFile == null || oldFile.equals("")){
				    filePath = FileOperater.saveUploadFile(flag,formFile.getInputStream(), formFile.getFileName());
				}else{
					filePath = FileOperater.updateUploadFile(flag,formFile.getInputStream(), formFile.getFileName(),oldFile);
				}
			}catch(IOException e){
				throw new BusinessException("不能读取上传的文件："+e,e);
			}
		}
		return filePath;
	}


}
